#ifndef _ERROR_H
#define _ERROR_H

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

extern int _argc;
extern char** _argv;

#define error(status, errnum, format, ...) {  \
    if (_argc != 0) {                         \
        fprintf(stderr, "%s: ", _argv[0]);    \
    }                                         \
    fprintf(stderr, (format), ##__VA_ARGS__); \
    if ((errnum) != 0) {                      \
        fputs(strerror((errnum)), stderr);    \
    }                                         \
    fputs("\n", stderr);                      \
    if ((status) != 0) {                      \
        exit((status));                       \
    }                                         \
}

#endif
